package com.kenliang.javase.enum1;

/**
 * @author KenLiang
 * @description:可以把枚举类看成一个继承了Enum的类
 * @date Created in 4:04 PM 2019/3/27.
 */
public class EnumTest {
    public static void main(String[] args) {


//        //访问静态成员
//        System.out.println(Type.staticValue);
//        System.out.println(Type.getStaticValue());
////        Type.A.staticValue;
//        System.out.println(Type.A.getStaticValue());
//
//        // 访问实例成员
//        System.out.println(Type.A.value);
//        System.out.println(Type.A.getValue());
//
//        Type.A.getType();
//
//        Type a = Type.A;
//        Type b = Type.B;
//        System.out.println(a.toString());
        System.out.println(Type.valueOf("B"));
        //返回枚举值在枚举类型中的声明顺序
//        System.out.println(a.ordinal());
//        //默认继承java.lang.Comparable接口
//        System.out.println(a.compareTo(b));
//
        for(Type type:Type.values()){
            System.out.println(type);
        }

        
        
    }
}
enum Type{
    A("a"){
        @Override
        public String getType() {
            System.out.println("A----------getType()");

            return null;
        }
    },
    B("b"){
        @Override
        public String getType() {
            System.out.println("A----------getType()");

            return null;
        }
    };

    private String  name;
    //构造方法必须是私有的
    private Type(String name){
        this.name  = name;
    }


    @Override
    public String toString() {
        return super.toString();
    }

    //定义抽象方法让子类继承
    public abstract String getType();

    //静态成员
    public static int staticValue=1;
    public static int getStaticValue(){
        return  staticValue;
    }

    //实例成员
    public int value=10;
    public  int getValue(){
        return value;
    }


}
